home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / docs / gccfaq10 / dma.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-02-15  |  1.4 KB  |  86 lines

  1. #include <pc.h>
  2. #include <dos.h>
  3. #include <go32.h>
  4. #include <dpmi.h>
  5. #include <stdio.h>
  6. #include <string.h>
  7. #include <stdlib.h>
  8. #include <malloc.h>
  9.  
  10. #define DMA_SIZE 2048
  11. #define DMA_CHANNELS 4
  12. #define DMA_DOS 0x21
  13.  
  14. #define DSP_TIMEOUT 2048
  15.  
  16. #define DMA_MEMORY_ALLOCATED 1
  17. #define DMA_CHAINED 2
  18. #define SB_ACTIVE 4
  19. #define DMA_RUNNING 8
  20.  
  21. #define TRUE 1
  22. #define FALSE 0
  23.  
  24. /* Global Variables */
  25.  
  26. extern struct WAVHeaderStruct {
  27.  char rid[4];
  28.  unsigned int rlen;
  29.  
  30.  char wid[4];
  31.  char fid[4];
  32.  unsigned int flen;
  33.  char null1[2];
  34.  short channels;
  35.  short frequency;
  36.  char null2[10];
  37.  
  38.  char did[4];
  39.  unsigned int dlen;
  40. } WAVHeader;
  41.  
  42. extern struct SoundStruct {
  43.  int port;
  44.  int irq;
  45.  int dma;
  46. } Sound;
  47.  
  48. extern struct DMAStruct {
  49.  int stat;
  50.  int flag;
  51.  int count;
  52.  
  53.  int wav_offset;
  54.  int wav_length;
  55.  int wav_frequency;
  56.  
  57.  unsigned int buffer_offset;
  58.  
  59.  _go32_dpmi_seginfo dos_memory;
  60.  _go32_dpmi_seginfo old_timer_handler;
  61.  _go32_dpmi_seginfo old_irq_handler;
  62.  
  63. } DMA;
  64.  
  65. extern struct WAVStruct {
  66.  char *offset;
  67.  int  length;
  68. } WAV;
  69.  
  70. /* Function Prototypes */
  71.  
  72. int WAVLoad(char *);
  73. int DMAInit(void);
  74.  
  75. void DMAChain(void);
  76. void DMAPlayWAV(void);
  77. void DMAStart(void);
  78. void DMAStop(void);
  79. void DMAPoll(void);
  80. void DMAInterrupt(void);
  81. void DMAShutDown(void);
  82. void WriteDSP(char);
  83.  
  84. short DMACount(void);
  85. unsigned char ReadDSP(void);
  86.